#include <bits/stdc++.h>
using namespace std;

//每次在上次能跳到的范围（end）内选择一个能跳的最远的位置
// （也就是能跳到max_far位置的点）作为下次的起跳点 ！

class Solution {
public:
    int jump(vector<int>& nums) {
        int size = nums.size();
        int max_far = 0;
        int end = 0;
        int step = 0;
        for(int i=0; i<size-1; ++i){
            max_far = max(max_far, i+nums[i]);
            if(i == end){
                end = max_far;
                ++step;
            }
        }
        return step;
    }
};

int main(){

}